/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufpr.inf.escel.testing.model;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author gustavo
 */
public abstract class Cut {

    private String novoPath,  arquivo,  criterio;
    private List<String> funcoes;

    public Cut() {
        funcoes = new ArrayList<String>();
    }

    /**
     * Factory Method
     * @param tipo da classe em teste
     * @return instancia da classe ecolhida
     */
    public static Cut getCut(String tipoCut) {

        if (tipoCut.toLowerCase().contains("pp")) {
            return new CutPP();
        } else if (tipoCut.toLowerCase().contains("po")) {
            return new CutPO();
        } else if (tipoCut.equals("JABUTI-AJ_CUT")) {
        }

        throw new UnsupportedOperationException("Tipo de cut não válido!");
    }

    public List<String> getFuncoes() {
        return funcoes;
    }

    public String getPrograma() {
        return arquivo;
    }

    public void setNovoPath(String path) {
        this.novoPath = path;
    }

    public void setPrograma(String file) {
        this.arquivo = file;
    }

    public String getNovoPath() {
        if (novoPath.charAt(novoPath.length() - 1) != '/') {
            novoPath = novoPath.concat(File.separator);
        }
        return novoPath;
    }

    public String getCriterio() {
        return criterio;
    }

    public void setCriterio(String criterio) {
        this.criterio = criterio;
    }
}
